package com.gitee.faster.webdav.kernel.model;

import com.gitee.faster.webdav.kernel.resource.Resource;
import jakarta.xml.bind.annotation.*;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.Collections;
import java.util.List;

/**
 * @author hongda.li
 */
@SuppressWarnings("SpellCheckingInspection")
@Data
@Accessors(chain = true)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
        "href",
        "status",
        "propStat",
        "error",
        "responseDescription"
})
@XmlRootElement(name = "response")
public class Response {

    /**
     * 提供了资源的 URI，它标识了响应中包含的信息所对应的资源
     */
    @XmlElement(required = true)
    protected List<String> href;

    /**
     * 提供了对资源执行操作（如获取属性或锁定资源）的结果状态码。
     */
    @XmlElement(name = "status")
    protected String status;

    /**
     * 包含了一组属性（prop）和它们的状态（status）。它用于描述资源的属性和对这些属性执行操作的结果
     */
    @XmlElement(name = "propstat")
    protected List<PropStat> propStat;

    /**
     * 如果处理资源时出现错误，error元素会包含相关的错误信息
     */
    protected Error error;

    /**
     * 提供了对响应的描述性信息
     */
    @XmlElement(name = "responsedescription")
    protected String responseDescription;

    public void addHref(Resource resource) {
        this.href = Collections.singletonList(resource.requestPath());
    }
}
